<?php
/**
 *
 * used to listen paypal info
 * @author yilo
 *
 */
class INPListenController extends Controller
{
	public function actionListen()
	{
		$req = 'cmd=_notify-validate';
		foreach ($_POST as $key => $value) 
		{
			$value = urlencode(stripslashes($value));
			$req .= "&$key=$value";
		}

		// post back to PayPal system to validate
		$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
		$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
		$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
		$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

		// assign posted variables to local variables
		$item_name = $_POST['item_name'];
		$item_number = $_POST['item_number'];
		$payment_status = $_POST['payment_status'];
		$payment_amount = $_POST['mc_gross'];
		$payment_currency = $_POST['mc_currency'];
		$txn_id = $_POST['txn_id'];
		$receiver_email = $_POST['receiver_email'];
		$payer_email = $_POST['payer_email'];

		if (!$fp) {
			// HTTP ERROR
		} else {
			fputs ($fp, $header . $req);
			while (!feof($fp)) {
				$res = fgets ($fp, 1024);
				if (strcmp ($res, "VERIFIED") == 0) 
				{
					// check the payment_status is Completed
					// check that txn_id has not been previously processed
					// check that receiver_email is your Primary PayPal email
					// check that payment_amount/payment_currency are correct
					// process payment
					$userId = Yii::app()->user->id;
					$user = User::model()->findByPk($userId);
					$buyOption = $_POST['os0'];
					//
					$money;
					if($buyOption == '1 Spinned Article')
					{
						$user->accountBalance = $user->accountBalance + 2; 
						$money = 2;
					}
					else if ($buyOption == '10 Spinned Articles')
					{
						$user->accountBalance = $user->accountBalance + 10;
						$money = 8; 
					}
					else if ($buyOption == '50 Spinned Articles')
					{
						$user->accountBalance = $user->accountBalance + 50;
						$money = 48;
					}
					else if ($buyOption == '100 Spinned Article')
					{
						$user->accountBalance = $user->accountBalance + 100;
						$money = 90;
					}
					$ret = $user->save();
					// save the money transaction detail
					$accountItem = new Accountitem;
					$accountItem->accountItemType = 'template';
					$accountItem->tradeMoney = $money;
					
					$accountItem->save();
					//redirect to template
				}
				else if (strcmp ($res, "INVALID") == 0) 
				{
					// log for manual investigation
					
					//redirect to error page
				}
			}
			fclose ($fp);
		}
	}
}